var input = File.ReadAllLines(Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "..", "day6.txt")); IEnumerable> GetGroups(string[] raw) { var e = raw.GetEnumerator(); var s = new List(); while (e.MoveNext()) { var line = (string)e.Current; if (string.IsNullOrEmpty(line)) { yield return s; s = new List(); continue; } s.Add(line); } yield return s; } var groups = GetGroups(input).ToList(); var part1 = groups.Sum(g => g.Aggregate((x, y) => x + y).ToCharArray().Distinct().Count()); part1.Dump(); var part2 = groups.Sum(g => g.SelectMany(a => a.ToCharArray()).GroupBy(a => a).Count(ga => ga.Count() == g.Count())); part2.Dump();